perm filename BDOUT[3,ALS] blob
sn#499129 filedate 1980-04-18 generic text, type C, neo UTF8
COMMENT ⊗ VALID 00002 PAGES
C REC PAGE DESCRIPTION
C00001 00001
C00002 00002 BDOUT AGAIN AGAIN1 BDOUT1 BDOUT2 CRLFCK PPLUS BORDER PSTAR PHYFEN PBM PBK PWM PWK
C00010 ENDMK
C⊗;
;BDOUT AGAIN AGAIN1 BDOUT1 BDOUT2 CRLFCK PPLUS BORDER PSTAR PHYFEN PBM PBK PWM PWK
;************************************************************
;BDOUT WILL PRINT OUT THE CURRENT BOARD IN PICTURE FORMAT. *
;BDOUT USES REGISTERS A, P, K, U1, U2, U4, U5, X3, AND X4. *
;REGISTERS A, P, AND K ARE NOT DESTROYED BY BDOUT *
;************************************************************
BDOUT:; MOVE A,OA
; MOVE P,OP
; MOVE K,OK
PUSHJ PDP,TERPRI
SETZB X4,U2
SETZM X3
MOVE U4,A
MOVE U5,P
AND U4,K ;ACTIVE KINGS
AND U5,K ;PASSIVE KINGS
; \|\\M1SAIL23;M2CHK.FNT[3,ALS];\F1
MOVEI U1,"\" ;CALL CHK FONT
PUSHJ PDP,MAGOUT
MOVEI U1,"F"
PUSHJ PDP,MAGOUT
MOVEI U1,"2"
PUSHJ PDP,MAGOUT
MOVEI U1,"H" ;UPPER LEFT CORNER
PUSHJ PDP,MAGOUT
PUSHJ PDP,TBORDE
MOVEI U1,"W" ;UPPER RIGHT CORNER
PUSHJ PDP,MAGOUT
PUSHJ PDP,TERPRI
MOVEI U1,15
PUSHJ PDP,MAGOUT
MOVEI U1,12
PUSHJ PDP,MAGOUT
PUSHJ PDP,PSTAR
AGAIN: PUSHJ PDP,PPLUS ;PRINT + SIGN
TRNN U2,7
JRST CRLFCK
AGAIN1: ROT A,1
ROT U4,1
ROT P,1
ROT U5,1
TLNN U4,400000 ;BK?
JRST .+6
SKIPE COLOR
PUSHJ PDP,PWK
SKIPN COLOR
PUSHJ PDP,PBK
JRST BDOUT1
TLNN A,400000 ;BM?
JRST .+6 ;NO
SKIPE COLOR
PUSHJ PDP,PWM
SKIPN COLOR
PUSHJ PDP,PBM
JRST BDOUT1
TLNN U5,400000 ;WK?
JRST .+6 ;NO
SKIPE COLOR
PUSHJ PDP,PBK
SKIPN COLOR
PUSHJ PDP,PWK
JRST BDOUT1
TLNN P,400000 ;WM?
JRST .+6 ;NO
SKIPE COLOR
PUSHJ PDP,PBM
SKIPN COLOR
PUSHJ PDP,PWM
JRST BDOUT1
PUSHJ PDP,PHYFEN ;EMPTY SQUARE
BDOUT1: AOS X4
CAIN X4,↑D8 ;SHIFT OVER BITS 9, 18, 27
JRST BDOUT2
CAIN X4,↑D17
JRST BDOUT2
CAIE X4,↑D26
JRST CRLFCK
BDOUT2: ROT A,1
ROT U4,1
ROT P,1
ROT U5,1
AOS X4
CRLFCK: TRNE U2,7 ;DO WE WANT A CR-LF?
JRST AGAIN ;NO
PUSHJ PDP,PSTAR
PUSHJ PDP,TERPRI
MOVEI U1,15
PUSHJ PDP,MAGOUT
MOVEI U1,12
PUSHJ PDP,MAGOUT
SETCMM X3
JUMPGE X3,.+3
PUSHJ PDP,PSTAR
JRST AGAIN1
CAIE U2,↑D64
JRST AGAIN-1
MOVEI U1,"G" ;BOTTOM LEFT CORNER
PUSHJ PDP,MAGOUT
PUSHJ PDP,BBORDE ;BOTTOM BORDER
PUSHJ PDP,MAGOUT
MOVEI U1,"W" ;BOTTOM RIGHT CORNER
PUSHJ PDP,MAGOUT
PUSHJ PDP,TERPRI
PUSHJ PDP,TERPRI
MOVEI U1,15
PUSHJ PDP,MAGOUT
MOVEI U1,12
PUSHJ PDP,MAGOUT
MOVEI U1,15
PUSHJ PDP,MAGOUT
MOVEI U1,12
PUSHJ PDP,MAGOUT
ROT A,1
ROT P,1
MOVEI U1,"\" ;RESTORE TEXT FONT
PUSHJ PDP,MAGOUT
MOVEI U1,"F"
PUSHJ PDP,MAGOUT
MOVEI U1,"1"
PUSHJ PDP,MAGOUT
POPJ PDP,
PPLUS: MOVEI U1,[ASCIZ /+ /]
PUSHJ PDP,PRINT
MOVEI U1,"+"
PUSHJ PDP,MAGOUT
MOVEI U1," " ;NON-PLAYING SQUARE
PUSHJ PDP,MAGOUT
AOS U2
POPJ PDP,
BORDER: ;MOVEI U1,[ASCIZ /* * * * * * * * * */]
; PUSHJ PDP,PRINT
TBORDE: MOVEI U1,"T" ;TOP LINE
SKIPA
BBORDE: MOVEI U1,"U" ;BOTTOM LINE
MOVEI X2,10
PUSHJ PDP,MAGOUT
SOJG X2,.-1
POPJ PDP,
PSTAR: MOVEI U1,[ASCIZ /* /]
PUSHJ PDP,PRINT
MOVEI U1,"*"
PUSHJ PDP,MAGOUT
MOVEI U1," "
PUSHJ PDP,MAGOUT
POPJ PDP,
PHYFEN: MOVEI U1,[ASCIZ / /]
PUSHJ PDP,PRINT
MOVEI U1,"Z" ;EMPTY PLAYING SQUARE
PUSHJ PDP,MAGOUT
AOS U2
POPJ PDP,
PBM: MOVEI U1,[ASCIZ /B /]
SKIPN SIDE
MOVEI U1,[ASCIZ /W /]
PUSHJ PDP,PRINT
MOVEI U1,"d" ;black man
PUSHJ PDP,MAGOUT
AOS U2
POPJ PDP,
PBK: MOVEI U1,[ASCIZ /BK/]
SKIPN SIDE
MOVEI U1,[ASCIZ /WK/]
PUSHJ PDP,PRINT
MOVEI U1,"c" ;black king
PUSHJ PDP,MAGOUT
AOS U2
POPJ PDP,
PWM: MOVEI U1,[ASCIZ /W /]
SKIPN SIDE
MOVEI U1,[ASCIZ /B /]
PUSHJ PDP,PRINT
MOVEI U1,"D" ;WHITE MAN
PUSHJ PDP,MAGOUT
AOS U2
POPJ PDP,
PWK: MOVEI U1,[ASCIZ /WK/]
SKIPN SIDE
MOVEI U1,[ASCIZ /BK/]
PUSHJ PDP,PRINT
MOVEI U1,"C" ;WHITE KING
PUSHJ PDP,MAGOUT
AOS U2
POPJ PDP,
LEGALY: ;SETZM MJW(X3) ;MUST ZERO SINCE BITS MAY BE LEFT FROM BACK UP
AOS (PDP)
SETOM OJ
SETZB U3,U4
SETZB U5,Q
MOVE U1,A
MOVE U2,K
AND U2,U1 ;ACTIVE KINGS
MOVE Z,U1
IOR Z,P
XOR Z,GUARD ;EMPTY SQUARES
MOVE X5,COLOR
XOR X5,X3
ANDI X5,1 ;NEEDED LATER
TRNE X5,1
EXCH U1,U2
JUMPE U1,LEG1
MOVE U3,Z
LSH U3,4
AND U3,P
LSH U3,4
AND U3,U1
LEG1: MOVEM U3,PLRF(X3)
JUMPE U1,LEG2
MOVE U4,Z
LSH U4,5
AND U4,P
LSH U4,5
AND U4,U1
LEG2: MOVEM U4,PLLF(X3)
JUMPE U2,LEG3
MOVE U5,Z
LSH U5,-4
AND U5,P
LSH U5,-4
AND U5,U2
LEG3: MOVEM U5,PLLB(X3)
JUMPE U2,LEG4
MOVE Q,Z
LSH Q,-5
AND Q,P
LSH Q,-5
AND Q,U2
LEG4: MOVEM Q,PLRB(X3)
SKIPE Q ;ARE THERE ANY JUMPS
POPJ PDP, ;JUMP RETURN
SKIPE U5
POPJ PDP,
SKIPE U4
POPJ PDP,
SKIPE U3
POPJ PDP,
AOS (PDP)
SETZM OJ
JUMPE U1,LEG5
MOVE U3,Z
LSH U3,4
AND U3,U1
MOVEM U3,PLRF(X3)
MOVE U4,Z
LSH U4,5
AND U4,U1
MOVEM U4,PLLF(X3)
LEG5: JUMPE U2,LEG6
MOVE U5,Z
LSH U5,-4
AND U5,U2
MOVEM U5,PLLB(X3)
MOVE Q,Z
LSH Q,-5
AND Q,U2
MOVEM Q,PLRB(X3)
LEG6: SKIPE Q
POPJ PDP,
SKIPE U5
POPJ PDP,
SKIPE U4
POPJ PDP,
SKIPE U3
POPJ PDP,
SOS (PDP)
SOS (PDP)
POPJ PDP, ;NO MOVE RETURN
GUARD: 377377377377
END